home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -seriously_amiga- / emulation / anonymousv0.40 / anonymous.doc < prev    next >
Text File  |  1999-04-19  |  25KB  |  678 lines

  1. Anonymous - The Amiga SPC700 emulator
  2.  
  3.  
  4. 1. Introduction: What's an SPC700 anyway?
  5.  
  6. This program is an emulator for the SPC700.  The SPC700 is the sound
  7. co-processor of the SNES.  The purpose of this program is to let you listen
  8. to music from SNES games on your Amiga.
  9.  
  10. I believe this is the 4th SPC700 emulator core in existence.  Besides
  11. my own, there are 3 others from which all SPC700 emulators are derived.
  12. I hope that someday, this will be the most complete.
  13.  
  14.  
  15.  
  16. 2. License: Cool legal routine, use it in your own code
  17.  
  18. ----------------------------Licensing Agreement-----------------------------
  19.  
  20. All files Copyright (c) 1998/1999 by Gaelan Griffin.  All rights reserved.
  21.  
  22. License Agreement
  23.  
  24. This license applies to the computer program known as "Anonymous", which is
  25. referred to in this license as the "program".
  26.  
  27. The "author" refers to Gaelan Griffin who is the author (except where
  28. noted) of the program, documentation, and all other files included in the
  29. archive and who owns the copyright (1998/1999) to said files.
  30.  
  31. The "archive" refers to the package of distribution, as prepared by the
  32. author.  The "files" or "data" refer to all elements of the archive.
  33.  
  34. Each licensee is addressed as "you" or the "licensee".
  35.  
  36.  
  37.  
  38. All conditions of this licensing agreement stated below must be met.
  39. If you do not accept ALL conditions of the licensing agreement you must
  40. destroy the archive and all accompanying data as well as any copies of
  41. the archive or data in your possession.  If this licensing agreement is
  42. changed by the author then you must accept the new licence or destroy
  43. the archive and data as stated above.
  44.  
  45. You can not challenge the author's copyright.
  46.  
  47. No profit can be gained directly or indirectly by the licensee as a result
  48. of the use of or failure to use the program without the prior written
  49. permission of the author.
  50.  
  51. The program can not be used in any way that directly or indirectly supports
  52. the Microsoft corporation or any of it's subsidiaries or business partners
  53. (former or current) without the author's prior written permission.
  54.  
  55. The program can not be used by any employee or shareholder of the Microsoft
  56. corporation or any of it's subsidiaries or business partners (current or
  57. former) without the author's prior written permission.
  58.  
  59.  
  60. The program and the data in the archive are freely distributable under the
  61. restrictions stated below, but are also Copyright (c) 1998/1999 by Gaelan
  62. Griffin.  All rights reserved.
  63.  
  64.  
  65. Redistribution of a modified version of the program, the archive or the
  66. contents of the archive is prohibited in any way, by any organization,
  67. regardless whether commercial or non-commercial. All files must be kept
  68. together, in their original and unmodified form.
  69.  
  70. Commercial distribution or inclusion of the software in any collection
  71. including, but not limited to, CD-ROMS or cover disks is forbidden without
  72. the author's prior written permission with the sole exception of Aminet and
  73. Fred Fish CD-ROMS.  The exception previously stated is only applicable as
  74. long as the author does not state otherwise and as long as all conditions
  75. of the licensing agreement are met.
  76.  
  77. Distribution may not violate the licensing agreement or copyright in any way.
  78.  
  79. A nominal fee to cover copying costs is allowed, but none of the files
  80. may be sold for profit.
  81.  
  82.  
  83. The author has the right to request other requirements (such as shareware
  84. fees) in addition to the licensing agreement as will be noted in the
  85. documentation contained in the archive.  Acceptance of the licensing
  86. agreement does not imply acceptance of such requirements.
  87.  
  88.  
  89.    THE PROGRAM IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY. THERE IS NO
  90. WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
  91. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  92. PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE
  93. RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM AND ALL RELATED FILES
  94. IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
  95. ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  96.  
  97.  
  98.    IN NO EVENT WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY 
  99. REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR ANY
  100. DAMAGES, INCLUDING, BUT NOT LIMITED TO, ANY GENERAL, SPECIAL, INCIDENTAL OR
  101. CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  102. PROGRAM INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA OR DATA BEING RENDERED
  103. INACCURATE, LOSSES OF ANY KIND SUSTAINED BY YOU OR THIRD PARTIES, OR THE
  104. FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS EVEN IF SUCH
  105. HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  106.  
  107.  
  108.  
  109. IF YOU DO NOT ACCEPT THIS LICENCE, YOU MUST DELETE THE PROGRAM, THE ARCHIVE
  110. AND ALL DATA CONTAINED IN THE ARCHIVE FROM YOUR STORAGE SYSTEM. YOU ACCEPT
  111. THIS LICENCE BY USING THE PROGRAM AND/OR REDISTRIBUTING THE ARCHIVE OR ANY
  112. DATA CONTAINED WITHIN THE ARCHIVE.
  113.  
  114. --------------------------End of Licensing Agreement------------------------
  115.  
  116.  
  117.  
  118. 3. Support: How to support this program
  119.  
  120. Read the Licensing Agreement if you have not already done so.
  121.  
  122. Whew! Now let's get down to the fun stuff.  This section will contain
  123. information on any requests that I ask for in exchange for using my program.
  124.  
  125.  
  126. There are no other requirements in addition to the Licensing Agreement
  127. at this time.  
  128.  
  129. (Of course, if you want to send me an email or something anyway, without
  130. being asked, that's perfectly acceptable and will be greatly appreciated!)
  131.  
  132. This may change in the future; it's possible that I might request that you
  133. send me an email for using my program or perhaps a small gift.  It might
  134. even become "shareware" someday.
  135.  
  136. One thing I have no intention of doing (but reserve the right to do anyway)
  137. is making this program crippled in any way.  This means no disable features
  138. for unregistered users, no keyfiles, no evaluation versions, and no copy
  139. protection.  Registered users will get the same program everyone else has.
  140. Maybe this seems unfair to anyone who actually registers the program but at
  141. least I'll know they did it because they wanted to, not just to get a
  142. keyfile.  I'll probably do something nice for registered users anyway.
  143. Also, certain people will never be required to pay anything.  If they do, I
  144. will send the money back :)
  145.  
  146. That is, IF I ever accept registrations.  It's possible that I never will.
  147. I guess it depends on how much support I get.
  148.  
  149.  
  150.  
  151. 4. Requirements: What you need
  152.  
  153. Minimum requirements:
  154.  
  155. - Any Amiga with a 68020+ processor and WB 2.0 or greater
  156. - About 100k of RAM (preferably fast RAM)
  157. - AHI V4 or greater installed.  Get it from Aminet: mus/misc/ahiusr.lha
  158. - Some SPC files to emulate.  Try www.chez.com/raist/spc700 or come.to/amispc
  159.  
  160. Optional:
  161.  
  162. - XPK installed
  163.  
  164.  
  165. 5. Usage: How do I use this thing?
  166.  
  167. The only installation necessary is to put the program somewhere in your
  168. path.  You may copy it to C: or RAM: for example, or anywhere you like
  169. just as long as it is in the system path.  Use the "path" command if
  170. necessary.
  171.  
  172. At the command line simply type
  173.  
  174. Anonymous <file.spc> [volume boost] [additional options]
  175.  
  176. This is the argument template: SPC/A,B=BOOST/N,P=PORT/K/N
  177.  
  178. File is the name of the SPC file to emulate.  It may be packed with XPK.
  179. It does not need to have the .spc extension.
  180.  
  181. You may add an optional volume boost number anywhere on the command line
  182. after the file argument.  The lowest value allowed is 2, and the highest
  183. is 8.  Values outside this range will be ignored.  Also, you should not
  184. use values greater than 4 when using a stereo mode that doesn't support
  185. panning as the results are undefined.
  186.  
  187. You can stop emulation at any time by hitting the return key.
  188.  
  189. During play, you can hit the number keys to play subsongs, and the shifted
  190. number keys (may not work properly on all keyboards) for jingles or sound
  191. effects.  Note that the effects may differ with each SPC file since these
  192. key presses just write data into the IO ports and each replay may assign
  193. a different meaning to them.
  194.  
  195. Let me explain:
  196.  
  197. When you press a number 0-9 that number is put into the first data port.
  198. When you press the shifted numbers '!'-')' the equivalent number is put
  199. into the second data port.  Now, it's completely up to the replay to
  200. determine what the data means.  It may mean to play a subsong, a sample,
  201. or to stop the music.  Play around with these and see what happens.  It's
  202. often possible to eliminate unneeded SPC files this way.
  203.  
  204. Not all keymaps work the same, as a result, subsongs may not work as
  205. intended.  For your reference, these are the keys:
  206.  
  207. Port 0 - 1 2 3 4 5 6 7 8 9 0
  208. Port 1 - ! @ # $ % ^ & * ( )
  209.  
  210. You can optionally specify an optional port handler type by using the
  211. P=PORT/K/N argument.  The port handler is simply the emulator's response
  212. to any I/O port writes by the SPC700.  Using this option can improve
  213. the emulated replay's response to any of your I/O port writes and
  214. theoretically could improve the replay emulation, although this is unlikely
  215. in most cases.
  216.  
  217. The default is to ignore all SPC700 I/O port writes.
  218.  
  219. Specifying port handler 1 will clear the corresponding read port on
  220. an SPC700 write.  This is sometimes helpful, especially for playing
  221. sound samples.
  222.  
  223. Specifying port handler 2 will cause the same value the SPC700 writes to
  224. appear in it's read port.  This is not known to be useful, however it
  225. might work in some rare cases.
  226.  
  227.  
  228. The interface could use some improvement, but it's not a high priority
  229. right now.  When the emulation has improved significantly it will become
  230. a deli/eagleplayer.
  231.  
  232. Yes, it's called Anonymous.  This is because I haven't been able to decide
  233. yet between the many good names I've come up with.  This will change in
  234. the future, probably when the emulation quality has improved.
  235.  
  236. Due to the use of the AHI mixing routines, the output will be very soft so
  237. turn up your monitor/speakers if necessary and please don't forget to turn
  238. them down again when you are finished.  This will be fixed in the future.
  239.  
  240. It uses a minimal stack.
  241.  
  242. It should only be run from the CLI.
  243.  
  244. That's about it.
  245.  
  246.  
  247. 5.1 Solutions to some possible problems you may have
  248.  
  249. If you get an XPK error -3, don't panic.  You probably just typed in the
  250. filename wrong.
  251.  
  252. Try hitting the subsongs keys.  It's possible that a particular file may
  253. be waiting for it's very first song command.
  254.  
  255. Try turning up the volume on your monitor/speaker.  Don't forget to
  256. turn the volume down again when you are done.  ESPECIALLY if you like to
  257. listen to chip music!  This may not be needed if you use the volume
  258. boost option.  However, volume boost may occasionally cause distortion.
  259. Also, you should not use a higher volume boost than 4 with stereo modes
  260. that do not use panning (The stereo modes without ++)
  261.  
  262. Adjust AHI settings of the default music unit.  Try setting it to one of
  263. the 8-bit fast modes and reduce the mixing frequency.  Also, setting the
  264. AHI CPU usage to 100% can help in some cases, but this can be dangerous.
  265. If it gets overloaded, the system will slow down tremendously and your
  266. mouse pointer will probably be sluggish.  If this happens, don't panic.
  267. Just keep hitting the enter key until it registers and wait until the
  268. system is functioning properly again, which may take a few minutes.
  269. There is also another effect of the CPU usage that deserves some attention.
  270. The music may slow down if it's too high in some cases, so if it's not
  271. playing at full speed try lowering the AHI CPU usage speed.
  272.  
  273. Try to give it as much CPU time as possible.  Kill as many other tasks as
  274. you can and boost the priority.
  275.  
  276. You may have wait a few seconds for the music to kick in.
  277.  
  278. If all else fails try a different file.  In particular, visit the website
  279. to see the recommended ones.
  280.  
  281.  
  282.  
  283. 6. Features: Feathers in My Cap!!! !!
  284.  
  285. - Completely system friendly.
  286. - Uses AHI for output.
  287. - Uses very little memory
  288. - Written from scratch in 68020 assembler
  289. - Multitasks
  290. - XPK support
  291. - Does NOT have an installation script (that's a GOOD thing!)
  292. - Tested with Enforcer and Mungwall
  293. - Excellent documentation.  Please read it, it's not boring at all!
  294.  
  295.  
  296. 6.1. What's Emulated
  297.  
  298. CPU emulation
  299.  
  300. 244/256 opcodes
  301.  
  302. NVPZC flags
  303.  
  304.  
  305. DSP Registers
  306.  
  307. For each voice:
  308.  
  309. - Mono Volume
  310. - Pitch
  311. - SRCN
  312.  
  313. General:
  314.  
  315. - Key On
  316. - Key Off
  317. - EndX
  318. - Dir
  319.  
  320.  
  321. ...and lot's more.
  322.  
  323.  
  324.  
  325. 7. Misfeatures: Black Eyes!!!
  326.  
  327. - Uses AHI for mixing (which prevents some DSP effects)
  328. - Written in 68020 asm (not portable for, e.g. PPC)
  329. - Doesn't multitask very well (uses all the CPU time it can get)
  330. - Has a simple CLI interface with poor input handling
  331.  
  332. See also, What's Not Emulated (yet)
  333.  
  334.  
  335. 7.1. What's Not Emulated (yet)
  336.  
  337. CPU emulation
  338.  
  339. The H, I, and B CPU flags.  The I and B flags are used for interrupts
  340. which are rarely used, I haven't seen any replays that use interrupts yet.
  341. There are no instructions for testing the halfcarry flag, so it's a bit
  342. difficult for replays to use it.  I have reason to believe that some
  343. replays depend on it, however, so I'll probably be adding support for it.
  344.  
  345. Unemulated CPU Instructions:
  346.  
  347. DAA
  348. DAS
  349.  
  350. BRK
  351. RET1
  352.  
  353. AND1/OR1
  354.  
  355. EI/DI
  356. SLEEP/STOP
  357.  
  358. I haven't seen these instructions used by replays very often, so I'm going
  359. to leave them unimplemented to help detect emulation errors for now.
  360.  
  361. The extra RAM is not emulated
  362. There are also 3 APU registers I'm unsure about: $F0,$F8,$F9
  363.  
  364. Timer emulation is imperfect, but seems to work well enough for now.
  365.  
  366. Opcodes and their operands are not memory mapped for speed.  This shouldn't
  367. cause any problems unless someone is trying to be cute and does a JMP $F4
  368. This can be fixed simply by setting a symbol during the assembly process,
  369. if needed.
  370.  
  371.  
  372. DSP emulation
  373.  
  374. Many registers are not yet implemented:
  375.  
  376. For each voice:
  377.  
  378. - Stereo Volume
  379. - ADSR
  380. - Gain
  381. - ENVX/OUTX
  382.  
  383. General:
  384.  
  385. - Main Volume (L and R)
  386. - Echo
  387. - Echo Volume (L and R)
  388. - Echo Feedback
  389. - Echo Delay
  390. - Flag
  391. - Mute
  392. - Noise
  393. - Pitch Modulation
  394. - FIR Filter
  395.  
  396. The DSP itself isn't emulated, it is simulated.  Emulation of the DSP
  397. is possible and would greatly increase the quality of the emulation, but
  398. the DSP roms need to be ripped first and this is very difficult to do.
  399. It is certainly beyond my skills.
  400.  
  401.  
  402. Miscellaneous emulation
  403.  
  404. The SNES itself is not emulated.  Although not necessary for most purposes,
  405. the 65816 code and data could be useful and may be even be required in
  406. some cases.  This will be necessary for my vision of ripped music.
  407.  
  408. I hear there is also a hardware analog filter for the sound output, but
  409. it may be difficult to simulate.
  410.  
  411.  
  412.  
  413. 8. Known bugs: Curses...
  414.  
  415. There is a small memory loss the first time the program is run.  I believe
  416. this is AHI's fault as I've seen other programs that use AHI exhibit this
  417. behavior.  This mem loss is small and is one-time only so it shouldn't
  418. affect anyone.  I don't know if it can be fixed or not.  If you have any
  419. information concerning this, please contact me.
  420.  
  421. It can sound terrible if it can't get enough CPU time, especially on
  422. slower systems.
  423.  
  424. Other than that, it appears to be pretty stable.  If you notice any
  425. enforcer or mungwall hits or any other bugs then please contact me, (Don't
  426. assume someone else will!) but try to troubleshoot the problem first.
  427.  
  428. When reporting bugs give me as much information about the problem as you
  429. can.  Also send your system configuration, what files were causing the
  430. problem, any system patches that conflicted, etc.
  431.  
  432.  
  433.  
  434. 9. The Future: God willing...
  435.  
  436. Better CPU and DSP emulation, of course.  I need to add some extensions
  437.  to my debugger to help track down the bugs.
  438.  
  439. PS3M based mixing routines -
  440.  This should greatly improve the sound quality, as well as the speed.
  441.  Currently I use AHI to do the mixing, which isn't very good for most
  442.  people (except maybe soundcard owners?)  It also limits some of the
  443.  DSP effects I can do.  I will still use AHI for output, but it may be
  444.  optional, since it can really slow things down if I've just mixed the
  445.  sound data and then AHI has to remix it to a different frequency, as can
  446.  happen sometimes.  Also, the sound will no longer be so soft.
  447.  
  448. Fix the timings -
  449.  Currently, I don't even bother limiting the speed, the emulator just runs
  450.  as fast as it can.  This isn't very good for 060 owners.  It's also the
  451.  (partial) cause of the poor multitasking.  It really would work better
  452.  if I disabled multitasking, but then AHI wouldn't work.
  453.  
  454. Sample caching -
  455.  This should speed things up a bit, at the expense of memory.  It will take
  456.  approximately 300k, which isn't too bad, but will be implemented as an
  457.  option because I like the fact that currently only 100k is needed.
  458.  
  459. CPU shutdown - 
  460.  This involves detecting timer loops and stopping emulation until the
  461.  specified time occurs.  This should give a big speed boost in many cases,
  462.  but will slow emulation down anytime the CPU is running (which is
  463.  potentially all the time, if the loop isn't detected.)
  464.  
  465. CPU optimized decoding routines -
  466.  It should be pretty easy to optimize the decoding routines for various
  467.  cache sizes which will speed things up a bit.
  468.  
  469. CPU optimizations -
  470.  Some things can be done here, perhaps at the expense of memory.
  471.  
  472. Of course, I plan to turn this into a deli/eagleplayer eventually.
  473.  
  474.  
  475. I'd like to write some replays for the SNES someday:
  476.  
  477. - Protracker as well as some of the multichannel clones like 6CHN/8CHN
  478. - MED/OctaMED but nothing with more than 8 channels
  479.  
  480. There is a technique that can be used to play uncompressed 8-bit samples
  481. on the SPC700.  With proper use of this, it should be possible to play
  482. all 8-bit mod formats with near-perfect quality, as well as some more
  483. interesting features such as sample mixing (which is normally difficult
  484. to do as you have to uncompress the samples, mix them, and then recompress
  485. them.  This takes a lot of time, especially the recompression, if you want
  486. the samples to sound good.)
  487.  
  488.  
  489. Some fun ideas for later:
  490.  
  491. Make a special version for minimal systems.  I think it may be possible to
  492. get the emulator running on an unexpanded A500.
  493.  
  494. Make it pure.
  495.  
  496. Turn it into a reentrant shared library.
  497.  
  498. Overlay parts of the code to minimize memory usage.
  499.  
  500. Add support for dynamic/static recompilation and other sophisticated
  501. emulation techniques.
  502.  
  503.  
  504.  
  505. 10. Ripping: The proper way to get SNES music
  506.  
  507. SPC files are SPC700 emulation save states, written out by some program
  508. Personally, I find this method to be very poor, but at the moment, there is
  509. no other easy way to get the music.  I'm working on a file format for ripped
  510. music which will be MUCH better than save states, but it will not be ready
  511. for quite some time.  If you're interested in ripping, send me an email.
  512.  
  513. The file format will be very powerful and easily extensible.  Unfortunately
  514. I need to rip a lot more music before I'll have a good idea of what's
  515. needed.  I'll also need a SNES backup utility of some sort.
  516.  
  517. Some possible advantages of ripped music:
  518.  
  519. - Properly ripped files will be perfect, unlike memory saves which can
  520.   have errors due to emulation deficiencies.  Music will start at the
  521.   actual beginning instead of whenever the SPC file was saved.  Also,
  522.   it is easier to compare two different ripped files than it is SPC files
  523.   because it is highly unlikely that two different SPC files of the same
  524.   music will be exactly the same on the binary level.
  525. - Ripped music can be contained in very small files that can get their data
  526.   directly out of a ROM file, thus reducing file sizes tremendously.
  527. - Real subsongs can be implemented, as well as jingles and sound effects.
  528. - Files can contain information about the replay resulting in more
  529.   efficient playback.  Files can also contain other information such as
  530.   author/ripper credits, alternative song names, annotations, etc.
  531.   One of the biggest advantages would be the ability to hold information
  532.   about where the CPU can be shutdown.  Some replays use very complex
  533.   methods for polling the timers which are nearly impossible to detect
  534.   with 100% accuracy.  This isn't a problem if the ripped music contains
  535.   the necessary information obtained by analyzing the replay.
  536.  
  537.  
  538. My ultimate goal is to create a complete collection of all SNES music,
  539. properly ripped.  Then I'll start working on some other console sound chip.
  540.  
  541.  
  542.  
  543. 11. Help wanted: How you can help
  544.  
  545. I REALLY need some sort of "backup utility" for my SNES in order to do
  546. research on the SPC700.  Anyone willing to donate one to the cause?
  547. Or sell cheap?  I live in America, so preferably someone from this country
  548. to reduce shipping costs.
  549.  
  550.  
  551. Betatesters wanted, email me to apply.  Some of the types of people I'm
  552. looking for:
  553.  
  554. - Anyone with good debugging skills, knowledge of AHI, digital sound theory,
  555.   or emulation experience.  It's also helpful if you have a wide range
  556.   of systems to test it on.  You also must have the time and willingness
  557.   to conduct tests as often as needed.
  558.  
  559. - People with soundcards.
  560.  
  561. - People with lots of SPC files who would be willing to test them with
  562.   every release of the emulator and record their observations.  To reduce
  563.   the workload, you will probably only be responsible for testing a certain
  564.   group of files with the rest being tested by other people.
  565.  
  566. Also, if you have the ability to run an SNES emulator that supports the
  567. saving of SPC files let me know.  If you have a PPC card you should be
  568. able to run SNES9x (WITH sound) very soon and that will do nicely.
  569.  
  570. If you have any SPC700 related files, let me know.  Check the webpage
  571. first to see if the files you have are already there.  In particular, I'm
  572. looking for The Legendary Amiga SPC700 Ripper, but anything that isn't
  573. in the download section will do.  I don't mean SPC save state files, but
  574. SPC700 related documents or programs (amiga only, unless they include
  575. source.)
  576.  
  577. I have the source to an SPC700 assembler, but it's unusable.  If someone
  578. would like to work on it, or write their own assembler let me know.  It's
  579. a real pain poking in programs with my debugger.  I am certainly not
  580. planning on writing any major replays that way.
  581.  
  582. Any information on deli/eagleplayer programming would be nice.  Seems the
  583. EP docs have not been completely translated and I seem to be missing some
  584. stuff.  I'd like to be able to use my debugger with the player, so docs
  585. on Genies/Engines would be most helpful.  I have already done some player
  586. work (get my NESA player!), but nothing this complex.
  587.  
  588.  
  589. Also, if you have any NEWS, then please contact me as soon as possible.
  590.  
  591.  
  592.  
  593. 12. Contact/Author: Send me an email
  594.  
  595. Raist is the webmaster of the official webpage at www.chez.com/raist/spc700
  596. or come.to/amispc  I also help update the news.
  597.  
  598. Be sure to visit it for the latest news on ALL my SPC700 emulators, as
  599. well as to download other SPC700 and SNES related files.  There is also a
  600. forum where you may leave public messages.  This webpage will probably
  601. be at the center of my SPC700 work, so check it often.
  602.  
  603.  
  604. Feel free to contact me for any bug reports, constructive criticism, ideas,
  605. praise, donations, information, or whatever.
  606.  
  607. My email addresses:
  608.  chinoclast (at) softhome.net
  609.  chinoclast (at) mailexcite.com (The upgrade sucks; I don't check it often)
  610.  
  611.  
  612. NOTE: If you haven't received an email reply in more than a week, write me
  613. again.  It's possible that it got lost somewhere or that I didn't realize
  614. you wanted a reply.
  615.  
  616.  
  617. 13. Thanks: The people that have contributed to this project
  618.  
  619. David Gonneau (Raist) - For making a great webpage!
  620. Dave Hng  - For providing useful info and data
  621. Gau - For his SPC700 programming information
  622. Jesper Svennevid - For his amiga port of SNES9x
  623. Ledi - For his APU manual
  624. Martin Blom - For AHI
  625. Savoury SnaX - For releasing the source to SNEeSe
  626. Steffen Haeuser - For WarpSNES, his WarpOS port of SNES9x
  627. The SNES9x team - For releasing the source to SNES9x
  628. The XPK team - For the best packing system in existence
  629. .Z-chan - For providing SPC700 information
  630.  
  631.  
  632. Special thanks to my Amiga emulation friends:
  633.  
  634. Morgan "A/NES" Johansson
  635. Ville "Wzonka-lad" Helin
  636.  
  637.  
  638. Special Guest Star: Peter "Delirium" Kunath
  639.  
  640.  
  641. Very special thanks to:
  642.  
  643. My family, especially my father
  644. The Trinity
  645.  
  646.  
  647. 14. History: No, not government propaganda
  648.  
  649. V0.40 19/Mar/99
  650. - CPU emulation has improved significantly, I don't know of ANY replays that
  651.   fail with this version.  If you find any SPC files that fail, let me know.
  652. - Dramatic improvements in sound quality, SPC files should sound much better
  653. - Added support for ReadArgs and optional port handlers
  654. - Documentation updated
  655.  
  656. V0.31 12/Jan/99
  657. - Added optional volume boost, append a number [2-8] to the command line
  658. - I REALLY need a console copier for my SPC700 research
  659.  
  660. V0.30 9/Dec/98
  661. - First "real" release.
  662. - Several bugs fixed, more files work now.
  663. - Subsong support
  664. - Emulation is faster.
  665. - Extensive documentation written.
  666. - FANTASTIC Webpage by Raist at www.chez.com/raist/spc700/
  667.  
  668. Compatibility is now greatly improved; many SPC files will run now.  This
  669. is the first official release and it is accompanied by an official webpage.
  670. Excellent documentation is included.  Please read it.
  671.  
  672.  
  673. V0.0 10/Sep/98
  674. First preview version uploaded to Aminet.  I fixed a bug that crashed PAL
  675. machines and re-uploaded it again later that night.  This was a very poor
  676. version; I just removed the debugger and put some code in to keep it
  677. running alone.
  678.